package org.patterns.behavior.visitor;


/**
 * 人力资源部类：具体访问者类
 */
public class HRDepartment extends Department {
    /**
     * 实现人力资源部对全职员工的访问
     * 此方法根据全职员工的工作时间，判断其是否需要计算加班时间或请假时间
     *
     * @param employee 全职员工对象，包含员工的相关信息
     */
    public void visit(FulltimeEmployee employee) {
        int workTime = employee.getWorkTime();
        System.out.println("正式员工" + employee.getName() + "实际工作时间为：" + workTime + "小时。");
        if (workTime > 40) {
            System.out.println("正式员工" + employee.getName() + "加班时间为：" + (workTime - 40) + "小时。");
        } else if (workTime < 40) {
            System.out.println("正式员工" + employee.getName() + "请假时间为：" + (40 - workTime) + "小时。");
        }
    }

    /**
     * 实现人力资源部对兼职员工的访问
     * 此方法主要展示兼职员工的工作时间，因为兼职员工不涉及加班和请假的情况
     *
     * @param employee 兼职员工对象，包含员工的相关信息
     */
    public void visit(ParttimeEmployee employee) {
        int workTime = employee.getWorkTime();
        System.out.println("临时工" + employee.getName() + "实际工作时间为：" + workTime + "小时。");
    }
}

